/*
 * 登录模块
 * 涉及用户登录验证、用户登录信息
 * 2018年3月15日16:36:55 
 * xwx-add
 */

var firstBack;
//初始化配置服务器信息
var initserver = server.serverconfig.getConfigInfo();

if(!initserver) {
	var configobj = {
		'server': 'http://222.212.92.4:10281',
		'imserver': 'ws://222.212.92.4:8611',
		'addr': '222.212.92.4',
		'port': '10281',
		'import': '8611'
		
		/*'server': 'http://171.221.200.56:1001',
		'imserver': 'ws://171.221.200.56:8611',
		'addr': '171.221.200.56',
		'port': '1001',
		'import': '8611'*/
	}
	server.serverconfig.setConfigInfo(configobj);
	location.reload(); //重置页面服务器配置信息
}

mui.init({
	beforeback: function() {
		if(!firstBack) {
			mui.toast('再按一次退出应用');
			firstBack = true;
			setTimeout(function() {
				firstBack = null;
			}, 1000);
			return false;
		}
		plus.runtime.quit();
	},
	statusBarBackground: '#f7f7f7'
});
mui.plusReady(function() {

	// 锁定屏幕为竖屏模式，不论设备如何旋转，屏幕都不会切换到横屏模式
	plus.screen.lockOrientation("portrait-primary");

	// 注册刷新事件
	window.addEventListener("myfresh", function(e) {
		console.log('刷新login.html');
		location.reload();
	});

	// 验证token
	var logininfo = server.user.getUserInfo();
	if(logininfo) {
		var param = {
			mobile: logininfo.userName
		};
		var wait = plus.nativeUI.showWaiting('请稍候...', {
			back: 'close'
		});
		server.user.setUserInfo(param, function() {
			wait.close();
			toMain();
		}, function(xhr) {
			if(xhr.status == 401) {
				server.refreshToken(function() {
					wait.close();
					toMain();
				}, function() {
					wait.close();
					mui.toast('token已过期，请重新登陆');
				});
			} else {
				wait.close();
				mui.toast('网络连接错误，请重试');
			}
		});
	} else {

		//	获取本地应用资源版本号
		plus.runtime.getProperty(plus.runtime.appid, function(info) {
			var appVer = info.version;
			var mtype = mui.os.android == true ? '1' : '2'; //plus.os.name 1,android 2,ios

			server.serverconfig.checkAppVersion(mtype, appVer, function(r) {
				console.log('r' + JSON.stringify(r));
				switch(r.errCode) {
					case 0:
						mui.confirm('是否下载新版本？', '温馨提示', '', function(e) {
							if(e.index == 1) {
								switch(plus.os.name) {
									case 'Android':

										//	查找更新下载APP目录是否有下载文件，存在则删除
										plus.io.resolveLocalFileSystemURL(
											'_downloads/update/',
											function(entry) {
												//	成功时回调：删除已存在的文档
												entry.removeRecursively(function() {
													//mui.toast('删除成功');
													console.log('删除当前目录相关文档');
												});
											},
											function(e) {
												console.log('当前目录暂无文档信息');
											}
										)

										plus.nativeUI.showWaiting("安装包下载中...");
										plus.downloader.createDownload(r.data.url, {
											filename: "_doc/update/"
										}, function(d, status) {
											if(status == 200) {
												console.log("下载apk文件成功：" + d.filename);
												installApp(d.filename); // 安装wgt包
											} else {
												console.log("下载apk文件失败！");
												plus.nativeUI.alert("下载apk文件失败！");
											}
											plus.nativeUI.closeWaiting();
										}).start();
										break;
									default:
										//mui.toast('下载IOS版本');	
										window.location.href = 'https://itunes.apple.com/cn/app/%E5%85%9A%E5%91%98%E7%9B%B4%E6%92%AD%E9%97%B4/id1384341559';
										break;
								}
							}
						}, 'div');
						break;
					case 4005:
						//mui.toast(r.errMsg);
						break;
					default:
						break;
				}
			}, function(r) {
				mui.toast(r.errMsg);
			})

		});

	}

	//	安装新版本APP
	function installApp(path) {
		plus.nativeUI.showWaiting("APP安装中...");
		plus.runtime.install(path, {}, function() {
			plus.nativeUI.closeWaiting();
			console.log("APP安装成功！");
			plus.nativeUI.alert("应用资源更新完成！", function() {
				plus.runtime.restart();
			});
		}, function(e) {
			plus.nativeUI.closeWaiting();
			console.log("安装文件失败[" + e.code + "]：" + e.message);
			plus.nativeUI.alert("安装文件失败[" + e.code + "]：" + e.message);
		});
	}

	// 去主页
	var toMain = function() {
		mui.openWindow({
			url: 'main.html',
			id: 'main.html'
		});
		var page = plus.webview.getWebviewById('tab-webview-subsetting.html');
		if(page) {
			mui.fire(page, 'myfresh');
		}
	};

	setTimeout(function() {
		//	关闭 splash
		plus.navigator.closeSplashscreen();
	}, 600);

	//	检查 "登录状态/锁屏状态" 结束
	var loginButton = document.getElementById('login');
	var accountBox = document.getElementById('account');
	var passwordBox = document.getElementById('password');
	var autoLoginButton = document.getElementById("autoLogin");
	var regButton = document.getElementById('reg');
	var checkstatus = document.getElementById('checkpwd');

	//	通过本地configinfo信息判断是否展示账号、记住密码
	var initconf = JSON.parse(localStorage.getItem('configinfo'));
	if(initconf) {
		accountBox.value = initconf.loginname != undefined ? initconf.loginname : ""; //显示账号
		checkstatus.checked = initconf.check ? "checked" : ""; //是否勾选
	}

	//	登录
	loginButton.addEventListener('tap', function(event) {
		var waiting = plus.nativeUI.showWaiting('请稍候...', {
			back: 'close'
		});
		var serverInfor = server.serverconfig.getConfigInfo();
		if(!serverInfor) {
			waiting.close();
			mui.toast('请先配置服务器');
			return;
		}

		var loginInfo = {
			account: accountBox.value,
			password: passwordBox.value
		};

		loginInfo.account = loginInfo.account || '';
		loginInfo.password = loginInfo.password || '';
		if(loginInfo.account.length < 3) {
			waiting.close();
			mui.toast('账号最短为 3 个字符');
			return;
		}

		if(loginInfo.password.length < 3) {
			waiting.close();
			mui.toast('密码最短为 3 个字符');
			return;
		}

		//	是否记住密码:true、false；配置本地存储configinfo：新增勾选状态，记录登录账户
		var flag = checkpwd.checked;
		serverInfor.check = flag; //新增状态
		serverInfor.loginname = flag ? loginInfo.account : ''; //新增状态
		var updateinfo = serverInfor;
		localStorage.setItem('configinfo', JSON.stringify(updateinfo));

		var result;
		var getloginObj = {
			"grant_type": "password",
			"username": loginInfo.account,
			"password": loginInfo.password
		};

		//	APP用户登录
		server.user.loginUser(getloginObj, function(r) {
				waiting.close();

				//	设置login信息
				localStorage.setItem('logininfo', JSON.stringify(r));

				server.user.setContactsInfo(function(r) {
					if(r.errCode == 0) {
						localStorage.setItem('contacts', JSON.stringify(r.data));
						return;
					}
					mui.toast(e.errMsg);
				}, function(r) {
					waiting.close();
					mui.toast("服务器错误，请稍后刷新重试");
				})

				var userInfoobj = {
					"mobile": r.userName
				}

				//	获取用户信息并存到本地
				server.user.setUserInfo(userInfoobj, function(r) {
					if(r.errCode == 0) {
						localStorage.setItem('userinfo', JSON.stringify(r.data));
					}
				}, function(r) {
					waiting.close();
					mui.toast("服务器错误，请稍后刷新重试");
				});

				server.meeting.setNvrConfig();

				toMain();
			},
			function(xhr) {
				waiting.close();
				var msg;
				if(xhr.status == 400) {
					msg = JSON.parse(xhr.responseText).error_description;
				} else {
					msg = '登陆失败';
				}
				mui.toast(msg);
			});

	});

	//	路由配置
	mui('#setConfig')[0].addEventListener('tap', function() {
		window.location.href = 'config.html';
	});

	mui.enterfocus('#login-form input', function() {
		mui.trigger(loginButton, 'tap');
	});

});